home *** CD-ROM | disk | FTP | other *** search
/ SGI Developer Toolbox 6.1 / SGI Developer Toolbox 6.1 - Disc 4.iso / documents / RFC / rfc974.txt < prev    next >
Text File  |  1994-08-01  |  18KB  |  400 lines

  1.  
  2.  
  3. Network Working Group                                    Craig Partridge
  4. Request for Comments: 974                 CSNET CIC BBN Laboratories Inc
  5.                                                             January 1986
  6.  
  7.                    MAIL ROUTING AND THE DOMAIN SYSTEM
  8.  
  9.  
  10. Status of this Memo
  11.  
  12.    This RFC presents a description of how mail systems on the Internet
  13.    are expected to route messages based on information from the domain
  14.    system described in RFCs 882, 883 and 973.  Distribution of this memo
  15.    is unlimited.
  16.  
  17. Introduction
  18.  
  19.    The purpose of this memo is to explain how mailers are to decide how
  20.    to route a message addressed to a given Internet domain name.  This
  21.    involves a discussion of how mailers interpret MX RRs, which are used
  22.    for message routing.  Note that this memo makes no statement about
  23.    how mailers are to deal with MB and MG RRs, which are used for
  24.    interpreting mailbox names.
  25.  
  26.    Under RFC-882 and RFC-883 certain assumptions about mail addresses
  27.    have been changed.  Up to now, one could usually assume that if a
  28.    message was addressed to a mailbox, for example, at LOKI.BBN.COM,
  29.    that one could just open an SMTP connection to LOKI.BBN.COM and pass
  30.    the message along.  This system broke down in certain situations,
  31.    such as for certain UUCP and CSNET hosts which were not directly
  32.    attached to the Internet, but these hosts could be handled as special
  33.    cases in configuration files (for example, most mailers were set up
  34.    to automatically forward mail addressed to a CSNET host to
  35.    CSNET-RELAY.ARPA).
  36.  
  37.    Under domains, one cannot simply open a connection to LOKI.BBN.COM,
  38.    but must instead ask the domain system where messages to LOKI.BBN.COM
  39.    are to be delivered. And the domain system may direct a mailer to
  40.    deliver messages to an entirely different host, such as SH.CS.NET.
  41.    Or, in a more complicated case, the mailer may learn that it has a
  42.    choice of routes to LOKI.BBN.COM.  This memo is essentially a set of
  43.    guidelines on how mailers should behave in this more complex world.
  44.  
  45.    Readers are expected to be familiar with RFCs 882, 883, and the
  46.    updates to them (e.g., RFC-973).
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56. Partridge                                                       [Page 1]
  57.  
  58.  
  59.  
  60. RFC 974                                                     January 1986
  61. Mail Routing and the Domain System
  62.  
  63.  
  64. What the Domain Servers Know
  65.  
  66.    The domain servers store information as a series of resource records
  67.    (RRs), each of which contains a particular piece of information about
  68.    a given domain name (which is usually, but not always, a host).  The
  69.    simplest way to think of a RR is as a typed pair of datum, a domain
  70.    name matched with relevant data, and stored with some additional type
  71.    information to help systems determine when the RR is relevant.  For
  72.    the purposes of message routing, the system stores RRs known as MX
  73.    RRs. Each MX matches a domain name with two pieces of data, a
  74.    preference value (an unsigned 16-bit integer), and the name of a
  75.    host.  The preference number is used to indicate in what order the
  76.    mailer should attempt deliver to the MX hosts, with the lowest
  77.    numbered MX being the one to try first.  Multiple MXs with the same
  78.    preference are permitted and have the same priority.
  79.  
  80.    In addition to mail information, the servers store certain other
  81.    types of RR's which mailers may encounter or choose to use.  These
  82.    are: the canonical name (CNAME) RR, which simply states that the
  83.    domain name queried for is actually an alias for another domain name,
  84.    which is the proper, or canonical, name; and the Well Known Service
  85.    (WKS) RR, which stores information about network services (such as
  86.    SMTP) a given domain name supports.
  87.  
  88. General Routing Guidelines
  89.  
  90.    Before delving into a detailed discussion of how mailers are expected
  91.    to do mail routing, it would seem to make sense to give a brief
  92.    overview of how this memo is approaching the problems that routing
  93.    poses.
  94.  
  95.    The first major principle is derived from the definition of the
  96.    preference field in MX records, and is intended to prevent mail
  97.    looping.  If the mailer is on a host which is listed as an MX for the
  98.    destination host, the mailer may only deliver to an MX which has a
  99.    lower preference count than its own host.
  100.  
  101.    It is also possible to cause mail looping because routing information
  102.    is out of date or incomplete.  Out of date information is only a
  103.    problem when domain tables are changed.  The changes will not be
  104.    known to all affected hosts until their resolver caches time out.
  105.    There is no way to ensure that this will not happen short of
  106.    requiring mailers and their resolvers to always send their queries to
  107.    an authoritative server, and never use data stored in a cache.  This
  108.    is an impractical solution, since eliminating resolver caching would
  109.    make mailing inordinately expensive.  What is more, the out-of-date
  110.    RR problem should not happen if, when a domain table is changed,
  111.  
  112.  
  113. Partridge                                                       [Page 2]
  114.  
  115.  
  116.  
  117. RFC 974                                                     January 1986
  118. Mail Routing and the Domain System
  119.  
  120.  
  121.    affected hosts (those in the list of MXs) have their resolver caches
  122.    flushed. In other words, given proper precautions, mail looping as a
  123.    result of domain information should be avoidable, without requiring
  124.    mailers to query authoritative servers.  (The appropriate precaution
  125.    is to check with a host's administrator before adding that host to a
  126.    list of MXs).
  127.  
  128.    The incomplete data problem also requires some care when handling
  129.    domain queries.  If the answer section of a query is incomplete
  130.    critical MX RRs may be left out.  This may result in mail looping, or
  131.    in a message being mistakenly labelled undeliverable.  As a result,
  132.    mailers may only accept responses from the domain system which have
  133.    complete answer sections.  Note that this entire problem can be
  134.    avoided by only using virtual circuits for queries, but since this
  135.    situation is likely to be very rare and datagrams are the preferred
  136.    way to interact with the domain system, implementors should probably
  137.    just ensure that their mailer will repeat a query with virtual
  138.    circuits should the truncation bit ever be set.
  139.  
  140. Determining Where to Send a Message
  141.  
  142.    The explanation of how mailers should decide how to route a message
  143.    is discussed in terms of the problem of a mailer on a host with
  144.    domain name LOCAL trying to deliver a message addressed to the domain
  145.    name REMOTE. Both LOCAL and REMOTE are assumed to be syntactically
  146.    correct domain names.  Furthermore, LOCAL is assumed to be the
  147.    official name for the host on which the mailer resides (i.e., it is
  148.    not a alias).
  149.  
  150. Issuing a Query
  151.  
  152.    The first step for the mailer at LOCAL is to issue a query for MX RRs
  153.    for REMOTE.  It is strongly urged that this step be taken every time
  154.    a mailer attempts to send the message.  The hope is that changes in
  155.    the domain database will rapidly be used by mailers, and thus domain
  156.    administrators will be able to re-route in-transit messages for
  157.    defective hosts by simply changing their domain databases.
  158.  
  159.    Certain responses to the query are considered errors:
  160.  
  161.       Getting no response to the query.  The domain server the mailer
  162.       queried never sends anything back.  (This is distinct from an
  163.       answer which contains no answers to the query, which is not an
  164.       error).
  165.  
  166.       Getting a response in which the truncation field of the header is
  167.  
  168.  
  169.  
  170. Partridge                                                       [Page 3]
  171.  
  172.  
  173.  
  174. RFC 974                                                     January 1986
  175. Mail Routing and the Domain System
  176.  
  177.  
  178.       set.  (Recall discussion of incomplete queries above).  Mailers
  179.       may not use responses of this type, and should repeat the query
  180.       using virtual circuits instead of datagrams.
  181.  
  182.       Getting a response in which the response code is non-zero.
  183.  
  184.    Mailers are expected to do something reasonable in the face of an
  185.    error.  The behaviour for each type of error is not specified here,
  186.    but implementors should note that different types of errors should
  187.    probably be treated differently.  For example, a response code of
  188.    "non-existent domain" should probably cause the message to be
  189.    returned to the sender as invalid, while a response code of "server
  190.    failure" should probably cause the message to be retried later.
  191.  
  192.    There is one other special case.  If the response contains an answer
  193.    which is a CNAME RR, it indicates that REMOTE is actually an alias
  194.    for some other domain name. The query should be repeated with the
  195.    canonical domain name.
  196.  
  197.    If the response does not contain an error response, and does not
  198.    contain aliases, its answer section should be a (possibly zero
  199.    length) list of MX RRs for domain name REMOTE (or REMOTE's true
  200.    domain name if REMOTE was a alias).  The next section describes how
  201.    this list is interpreted.
  202.  
  203. Interpreting the List of MX RRs
  204.  
  205.    NOTE: This section only discusses how mailers choose which names to
  206.    try to deliver a message to, working from a list of RR's.  It does
  207.    not discuss how the mailers actually make delivery.  Where ever
  208.    delivering a message is mentioned, all that is meant is that the
  209.    mailer should do whatever it needs to do to transfer a message to a
  210.    remote site, given a domain name for that site.  (For example, an
  211.    SMTP mailer will try to get an address for the domain name, which
  212.    involves another query to the domain system, and then, if it gets an
  213.    address, connect to the SMTP TCP port).  The mechanics of actually
  214.    transferring the message over the network to the address associated
  215.    with a given domain name is not within the scope of this memo.
  216.  
  217.    It is possible that the list of MXs in the response to the query will
  218.    be empty.  This is a special case.  If the list is empty, mailers
  219.    should treat it as if it contained one RR, an MX RR with a preference
  220.    value of 0, and a host name of REMOTE.  (I.e., REMOTE is its only
  221.    MX).  In addition, the mailer should do no further processing on the
  222.    list, but should attempt to deliver the message to REMOTE.  The idea
  223.  
  224.  
  225.  
  226.  
  227. Partridge                                                       [Page 4]
  228.  
  229.  
  230.  
  231. RFC 974                                                     January 1986
  232. Mail Routing and the Domain System
  233.  
  234.  
  235.    here is that if a domain fails to advertise any information about a
  236.    particular name we will give it the benefit of the doubt and attempt
  237.    delivery.
  238.  
  239.    If the list is not empty, the mailer should remove irrelevant RR's
  240.    from the list according to the following steps.  Note that the order
  241.    is significant.
  242.  
  243.       For each MX, a WKS query should be issued to see if the domain
  244.       name listed actually supports the mail service desired.  MX RRs
  245.       which list domain names which do not support the service should be
  246.       discarded.  This step is optional, but strongly encouraged.
  247.  
  248.       If the domain name LOCAL is listed as an MX RR, all MX RRs with a
  249.       preference value greater than or equal to that of LOCAL's must be
  250.       discarded.
  251.  
  252.    After removing irrelevant RRs, the list can again be empty.  This is
  253.    now an error condition and can occur in several ways.  The simplest
  254.    case is that the WKS queries have discovered that none of the hosts
  255.    listed supports the mail service desired.  The message is thus deemed
  256.    undeliverable, though extremely persistent mail systems might want to
  257.    try a delivery to REMOTE's address (if it exists) before returning
  258.    the message. Another, more dangerous, possibility is that the domain
  259.    system believes that LOCAL is handling message for REMOTE, but the
  260.    mailer on LOCAL is not set up to handle mail for REMOTE.  For
  261.    example, if the domain system lists LOCAL as the only MX for REMOTE,
  262.    LOCAL will delete all the entries in the list.  But LOCAL is
  263.    presumably querying the domain system because it didn't know what to
  264.    do with a message addressed to REMOTE. Clearly something is wrong.
  265.    How a mailer chooses to handle these situations is to some extent
  266.    implementation dependent, and is thus left to the implementor's
  267.    discretion.
  268.  
  269.    If the list of MX RRs is not empty, the mailer should try to deliver
  270.    the message to the MXs in order (lowest preference value tried
  271.    first).  The mailer is required to attempt delivery to the lowest
  272.    valued MX.  Implementors are encouraged to write mailers so that they
  273.    try the MXs in order until one of the MXs accepts the message, or all
  274.    the MXs have been tried.  A somewhat less demanding system, in which
  275.    a fixed number of MXs is tried, is also reasonable.  Note that
  276.    multiple MXs may have the same preference value.  In this case, all
  277.    MXs at with a given value must be tried before any of a higher value
  278.    are tried.  In addition, in the special case in which there are
  279.    several MXs with the lowest preference value,  all of them should be
  280.    tried before a message is deemed undeliverable.
  281.  
  282.  
  283.  
  284. Partridge                                                       [Page 5]
  285.  
  286.  
  287.  
  288. RFC 974                                                     January 1986
  289. Mail Routing and the Domain System
  290.  
  291.  
  292. Minor Special Issues
  293.  
  294.    There are a couple of special issues left out of the preceding
  295.    section because they complicated the discussion.  They are treated
  296.    here in no particular order.
  297.  
  298.    Wildcard names, those containing the character '*' in them, may be
  299.    used for mail routing.  There are likely to be servers on the network
  300.    which simply state that any mail to a domain is to be routed through
  301.    a relay. For example, at the time that this RFC is being written, all
  302.    mail to hosts in the domain IL is routed through RELAY.CS.NET.  This
  303.    is done by creating a wildcard RR, which states that *.IL has an MX
  304.    of RELAY.CS.NET.  This should be transparent to the mailer since the
  305.    domain servers will hide this wildcard match. (If it matches *.IL
  306.    with HUJI.IL for example, a domain server will return an RR
  307.    containing HUJI.IL, not *.IL). If by some accident a mailer receives
  308.    an RR with a wildcard domain name in its name or data section it
  309.    should discard the RR.
  310.  
  311.    Note that the algorithm to delete irrelevant RRs breaks if LOCAL has
  312.    a alias and the alias is listed in the MX records for REMOTE.  (E.g.
  313.    REMOTE has an MX of ALIAS, where ALIAS has a CNAME of LOCAL).  This
  314.    can be avoided if aliases are never used in the data section of MX
  315.    RRs.
  316.  
  317.    Implementors should understand that the query and interpretation of
  318.    the query is only performed for REMOTE.  It is not repeated for the
  319.    MX RRs listed for REMOTE.  You cannot try to support more extravagant
  320.    mail routing by building a chain of MXs.  (E.g. UNIX.BBN.COM is an MX
  321.    for RELAY.CS.NET and RELAY.CS.NET is an MX for all the hosts in .IL,
  322.    but this does not mean that UNIX.BBN.COM accepts any responsibility
  323.    for mail for .IL).
  324.  
  325.    Finally, it should be noted that this is a standard for routing on
  326.    the Internet.  Mailers serving hosts which lie on multiple networks
  327.    will presumably have to make some decisions about which network to
  328.    route through. This decision making is outside the scope of this
  329.    memo, although mailers may well use the domain system to help them
  330.    decide.  However, once a mailer decides to deliver a message via the
  331.    Internet it must apply these rules to route the message.
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341. Partridge                                                       [Page 6]
  342.  
  343.  
  344.  
  345. RFC 974                                                     January 1986
  346. Mail Routing and the Domain System
  347.  
  348.  
  349. Examples
  350.  
  351.    To illustrate the discussion above, here are three examples of how
  352.    mailers should route messages.  All examples work with the following
  353.    database:
  354.  
  355.       A.EXAMPLE.ORG    IN    MX    10    A.EXAMPLE.ORG
  356.       A.EXAMPLE.ORG    IN    MX    15    B.EXAMPLE.ORG
  357.       A.EXAMPLE.ORG    IN    MX    20    C.EXAMPLE.ORG
  358.       A.EXAMPLE.ORG    IN    WKS   10.0.0.1    TCP    SMTP
  359.  
  360.       B.EXAMPLE.ORG    IN    MX    0      B.EXAMPLE.ORG
  361.       B.EXAMPLE.ORG    IN    MX    10     C.EXAMPLE.ORG
  362.       B.EXAMPLE.ORG    IN    WKS   10.0.0.2    TCP    SMTP
  363.  
  364.       C.EXAMPLE.ORG    IN    MX    0     C.EXAMPLE.ORG
  365.       C.EXAMPLE.ORG    IN    WKS   10.0.0.3    TCP    SMTP
  366.  
  367.       D.EXAMPLE.ORG    IN    MX    0     D.EXAMPLE.ORG
  368.       D.EXAMPLE.ORG    IN    MX    0     C.EXAMPLE.ORG
  369.       D.EXAMPLE.ORG    IN    WKS   10.0.0.4    TCP    SMTP
  370.  
  371.    In the first example, an SMTP mailer on D.EXAMPLE.ORG is trying to
  372.    deliver a message addressed to A.EXAMPLE.ORG. From the answer to its
  373.    query, it learns that A.EXAMPLE.ORG has three MX RRs.  D.EXAMPLE.ORG
  374.    is not one of the MX RRs and all three MXs support SMTP mail
  375.    (determined from the WKS entries), so none of the MXs are eliminated.
  376.    The mailer is obliged to try to deliver to A.EXAMPLE.ORG as the
  377.    lowest valued MX.  If it cannot reach A.EXAMPLE.ORG it can (but is
  378.    not required to) try B.EXAMPLE.ORG. and if B.EXAMPLE.ORG is not
  379.    responding, it can try C.EXAMPLE.ORG.
  380.  
  381.    In the second example, the mailer is on B.EXAMPLE.ORG, and is again
  382.    trying to deliver a message addressed to A.EXAMPLE.ORG.  There are
  383.    once again three MX RRs for A.EXAMPLE.ORG, but in this case the
  384.    mailer must discard the RRs for itself and C.EXAMPLE.ORG (because the
  385.    MX RR for C.EXAMPLE.ORG has a higher preference value than the RR for
  386.    B.EXAMPLE.ORG).  It is left only with the RR for A.EXAMPLE.ORG, and
  387.    can only try delivery to A.EXAMPLE.ORG.
  388.  
  389.    In the third example, consider a mailer on A.EXAMPLE.ORG trying to
  390.    deliver a message to D.EXAMPLE.ORG.  In this case there are only two
  391.    MX RRs, both with the same preference value.  Either MX will accept
  392.    messages for D.EXAMPLE.ORG. The mailer should try one MX first (which
  393.    one is up to the mailer, though D.EXAMPLE.ORG seems most reasonable),
  394.    and if that delivery fails should try the other MX (e.g.
  395.    C.EXAMPLE.ORG).
  396.  
  397.  
  398. Partridge                                                       [Page 7]
  399.  
  400.